package com.zyl.basis.state;

/**
 * @author zhaoyl
 * @date 2024/5/27 15:53
 * @description 说明
 *
 * 当主线程调用了某个子线程的join()方法后，主线程的执行会暂停(阻塞)，直到子线程执行完毕。
 * 这使得主线程可以等待子线程完成其任务，以便能够继续执行后续代码。
 * Thread.join()常用于在多线程环境中确保某些线程的输出成为其他线程的输入，
 * 或者需要等待一个线程完成其长时间运行的操作才能继续执行。
 */
public class TestJoin implements  Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println("线程插队->"+i);
        }
    }

    public static void main(String[] args) throws InterruptedException {
        //启动我们的线程
        TestJoin testJoin = new TestJoin();
        Thread thread = new Thread(testJoin);


        //主线程
        for (int i = 0; i < 50; i++) {
            if (i==20){
                thread.start();//Thread.join()方法只能在已经被启动的线程上调用。
                thread.join();//线程插队
            }
            System.out.println("main->"+i);
        }
    }
}

